package com.example.demo.controller;

import com.example.demo.api.SmsApi;
import com.example.demo.dao.monDao.PersonResultDao;
import com.example.demo.dto.PhotoForTranslate;
import com.example.demo.dto.TextTranslateMon;
import com.example.demo.dto.monDTO.PersonResultMongo;
import com.example.demo.service.Tencent_NPLService;
import com.example.demo.utils.FileSaveLocalUtil;
import com.example.demo.utils.KeyUtil;
import io.swagger.annotations.*;
import org.json.simple.parser.JSONParser;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

import java.util.Date;

@RestController
@Api(tags = "翻译")
public class NPLController {
    @Autowired
    private Tencent_NPLService tencent_nplService;
    @Autowired
    private PersonResultDao personResultDao;  //直接注入不写service了。
    @PostMapping("/getNPL_getTextTrans")
    @ApiOperation("文本翻译")
    public String getNPL_getTextTrans(@ApiParam("提交需要翻译的文本信息") @RequestParam("text") String text,
                                      @ApiParam("0  自动识别（中英文互转）<br>1    中文翻译成英文<br>2    英文翻译成中文<br>3    中文翻译成西班牙文<br> 4   西班牙文翻译成中文<br> 5   中文翻译成法文<br>6   法文翻译成中文<br>7   英文翻译成越南语<br>8   越南语翻译成英文<br>9   中文翻译成粤语<br>10   粤语翻译成中文<br>11   中文翻译成韩文<br> 13   英文翻译成德语<br> 14   德语翻译成英文<br> 15   中文翻译成日文<br> 16   日文翻译成中文")
                                      @RequestParam(value = "type") String type,
                                      @ApiParam("用户openid,可提交可不提交，不提交则不会保存") @RequestParam(value = "openid",defaultValue = "undefined") String openid )throws Exception {
        String result = tencent_nplService.getNPL_getTextTrans(text,type);
        JSONParser parser=new JSONParser();
        org.json.simple.JSONObject data = (org.json.simple.JSONObject) parser.parse(result);
        TextTranslateMon mingPian = new TextTranslateMon(data);
        PersonResultMongo personResultMongo = new PersonResultMongo();
        personResultMongo.setId(KeyUtil.genUniqueKey());
        personResultMongo.setText(text);
        personResultMongo.setResult(mingPian); //结果
        personResultMongo.setCreateTime(new Date());  //创建日期
        personResultMongo.setOpenid(openid);  //用户openid
        personResultMongo.setType("文本翻译");
        personResultDao.save(personResultMongo);
        return result;
    }

    @PostMapping("/getNPL_getImageTrans")
    @ApiOperation("图片翻译")
    public String getNPL_getImageTrans(@ApiParam("一张需要翻译的图片") @RequestParam("file")MultipartFile file,
                                       @ApiParam("源图片内的语言(注意不能传中文值) <br>en 指英文 只可转中文 zh<br>zh 指中文 可转en, jp, kr<br>jp 指日文 可转zh<br>kr 指韩文 可转zh") @RequestParam("source") String source,
                                       @ApiParam("需要翻译出的语言，看上面的解释传入对应的值")@RequestParam("target") String target,
                                       @ApiParam("用户openid,可提交可不提交，不提交则不会保存") @RequestParam(value = "openid",defaultValue = "undefined") String openid)throws Exception {
        String fileName = KeyUtil.genUniqueKey();
        FileSaveLocalUtil.savePic(file.getInputStream(), fileName);
        String result = tencent_nplService.getNPL_getImageTrans(file.getBytes(), source, target);
        JSONParser parser=new JSONParser();
        org.json.simple.JSONObject data = (org.json.simple.JSONObject) parser.parse(result);
        PhotoForTranslate mingPian = new PhotoForTranslate(data);
        PersonResultMongo personResultMongo = new PersonResultMongo();
        personResultMongo.setId(KeyUtil.genUniqueKey());
        personResultMongo.setImgUrl(SmsApi.YU_MING+"getPhoto?photoId=/"+fileName+".jpg");    //输入的图片
        personResultMongo.setResult(mingPian); //结果
        personResultMongo.setCreateTime(new Date());  //创建日期
        personResultMongo.setOpenid(openid);  //用户openid
        personResultMongo.setType("图片翻译");
        personResultDao.save(personResultMongo);
        return result;
    }

}
